#pragma once

#include "iostream"
#include "vector"
#include "algorithm"

using namespace std;
/*HJJ QQ479287006
 *6184. 统计共同度过的日子数 显示英文描述
通过的用户数0
尝试过的用户数0
用户总通过次数0
用户总提交次数0
题目难度Easy
Alice 和 Bob 计划分别去罗马开会。

给你四个字符串 arriveAlice ，leaveAlice ，arriveBob 和 leaveBob 。Alice 会在日期 arriveAlice 到 leaveAlice 之间在城市里（日期为闭区间），而 Bob 在日期 arriveBob 到 leaveBob 之间在城市里（日期为闭区间）。每个字符串都包含 5 个字符，格式为 "MM-DD" ，对应着一个日期的月和日。

请你返回 Alice和 Bob 同时在罗马的天数。

你可以假设所有日期都在 同一个 自然年，而且 不是 闰年。每个月份的天数分别为：[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] 。



示例 1：

输入：arriveAlice = "08-15", leaveAlice = "08-18", arriveBob = "08-16", leaveBob = "08-19"
输出：3
解释：Alice 从 8 月 15 号到 8 月 18 号在罗马。Bob 从 8 月 16 号到 8 月 19 号在罗马，他们同时在罗马的日期为 8 月 16、17 和
 * */

int getMonthDay(int month)
{
    int arr[]={0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    return arr[month];
}

string getmonth(string arriveAlice)
{
    return arriveAlice.substr(0,arriveAlice.find("-"));
}

string getday(string arriveAlice)
{
    return arriveAlice.substr(arriveAlice.find("-")+1);
}

//寻找日期重复区间
int countDaysTogether(string arriveAlice, string leaveAlice, string arriveBob, string leaveBob) {

    //string alice1= getmonth(arriveAlice);
    //string alice2= getmonth(arriveAlice);

    //string bob1= getmonth(arriveBob);
    //string bob2= getmonth(leaveBob);

    //获取他们两个比较晚的时间
    string arrive;

    int ret=1;
    if (arriveAlice.compare(arriveBob)>0)
    {
        arrive=arriveAlice;
    } else{
        arrive=arriveBob;
    }
    string lives;//结束时间
    if (leaveAlice.compare(leaveBob)<0)
    {
        lives=leaveAlice;
    } else{
        lives=leaveBob;
    }

    if (lives.compare(arrive)<0)
        return 0;
    else{
        //计算日期 arrive++  =   lives
        int  arrive1= stoi(getmonth(arrive)) ;
        int arrive2= stoi(getday(arrive));

        int levae1= stoi(getmonth(lives));
        int levae2= stoi(getday(lives));

        while (levae1!=arrive1||levae2!=arrive2)
        {
            int temp=getMonthDay(arrive1);
            if (arrive2<temp)
            {
                arrive2++;
                ret++;
            } else if (arrive2==temp)
            {
                arrive2=1;
                arrive1++;
                ret++;
            }

        }



        return ret;

    }




    return -1;

}